1. Technical Field
The present invention describes a procedure for measuring the performance of processing steps in programs or parts of programs by means of messages, particularly in application programs which are distributed over several computers.
2. Prior Art
In distributed applications, program parts run on several computers which are usually different. They communicate with one another by transmitting messages over one or more networks.
It is very difficult to determine the end-to-end response time of transactions in a distributed application and to evaluate large response times in particular.
The determination and evaluation of the end-to-end response time of a transaction in a distributed application is necessary because of the following points:
During the development of an application, performance bottlenecks need to be recognised early and removed through design improvements.
During the installation of a distributed application, performance problems often occur. These are connected to the local configuration of hardware and software not having been tested using the new product. In such cases it is very difficult for the customer to assign an error to one of the products involved.
After the successful commissioning of a distributed application, one will want to measure and evaluate the end-to-end response time of transactions. This is necessary in order to be able to ensure the availability of the application for the user. In addition, one wishes to analyse the end-to-end response time by components in order to recognise the cause of a fault on exceeding a pre-given limit value.
The determination of the end-to-end response time of transactions in distributed applications is technically necessary.
Currently there are a number of procedures for determining the end-to-end response time.
One of the procedures for determining the end-to-end response time is based on the idea of fitting the application parts with instruments so that they can signal the start and end of transactions (or transaction parts) to an agent running outside the application. The agent ensures that the data are brought together centrally and evaluated. In this procedure, the measurements of transaction parts belonging to a transaction call cannot be correlated, i.e. one cannot know which measurement values belong to a particular transaction call. In order to facilitate a correlation, a globally clear identification of the transaction call must be introduced into this procedure. Such an extended procedure is technically complex because the agent is outside the application logic and therefore globally clear identifications are required. As all measurement values for evaluation have to be collected together at a central point, the discovery of associated values from a large number of measurement values is very laborious.
In addition, there are costly hardware monitors with common electronic clocks with which one can monitor system calls over several computers. Hardware monitors are expensive and the instrumentation is very costly. A disadvantage of hardware monitors is in that they cannot supply any data to application levels. Thus calls from operating system services can be counted and measured but the allocation of transactions to an application is difficult. In addition, only computers with the same type of architecture can be monitored. This often does not occur with distributed applications because the servers and clients are usually different.
Otherwise there are the so-called profilers with which one can determine which program parts run on a computer and how often and how much time is spent in which program parts. However, it is not possible to receive coherent information on transaction parts running on different computers.
All the above procedures are based on the application being measured from outside, i.e. the application logic and instrumentation being fully separate or separate as far as is possible.